#@Time : 2021/10/2418:00
#@Author : xujian
import numpy

#shape属性

#1.一维数组
n1=numpy.array([1,2,3,4,5,6,7,8,9,10,11,12])
print(n1.shape)   #(12,)  这里12是个数

#2.二维数组
n2=numpy.array([[1,2,3],[4,5,6],[7,8,9]])
print(n2.shape)  #(3, 3)  第一个3是行数还是个数

n3=numpy.array([[1,2,3,3],[4,5,6,1],[7,8,9,2]])
print(n3.shape)  #(3, 4)  由此看来是行数

#3.三维数组
n4=numpy.array([[[1,2,3],[4,5,9]],[[4,5,6],[7,2,6]]])
print(n4)
                # [[[1 2 3]
                #   [4 5 9]]
                #
                #  [[4 5 6]
                #   [7 2 6]]]

print(n4.shape)   #(2, 2, 3)   #此处的2是什么
#第一个2是块数，第二个是每一块的行数，第三个是列数


#reshape
#1.
n5=numpy.arange(15)
print(n5)
print(n5.shape)    #(15,)
n6=n5.reshape((3,5))
print(n5)    #不变
print('######################n6')
print(n6)
                    # [[ 0  1  2  3  4]
                    #  [ 5  6  7  8  9]
                    #  [10 11 12 13 14]]
n8=numpy.arange(16)
n7=n8.reshape((2,2,4))
print(n7)
                # [[[ 0  1  2  3]
                #   [ 4  5  6  7]]
                #
                #  [[ 8  9 10 11]
                #   [12 13 14 15]]]




#问题1如果我们相想知道一个未知的数组的元素的个数，并且将其转换为一维数组，如何操作
    #需要使用shape属性(因为shape返回的值是一个元组告诉我们数组的信息，我们可以利用索引反过去)
    #法1
n2=numpy.array([[1,2,3],[4,5,6],[7,8,9]])
hangshu=n2.shape[0]
lieshu=n2.shape[1]
n2=n2.reshape((hangshu*lieshu,))
print(n2)  #[1 2 3 4 5 6 7 8 9]

    # 法2
#flatten()    flatten : 使...平坦
n7=numpy.array([[1,2,3],[4,5,6]])
n7=n7.flatten()
print('2346522346453266463')
print(n7)  #[1 2 3 4 5 6]



